<template>
  <UploadExcel :on-success="success" />
</template>

<script>
import { importEmployee } from "@/api/employees";
export default {
  methods: {
    async success({ header, results }) {
      // header, results 就是导入的数据  数据是中文  要导成英文
      // 和新增员工的属性式一样的
      /*  formData: {
        username: "",姓名
        mobile: "",手机号
        formOfEmployment: "",
        workNumber: "",工号
        departmentName: "",
        timeOfEntry: "", 入职日期
        correctionTime: "",转正日期
      }, */

      console.log(results);

      const userRelations = {
        入职日期: "timeOfEntry",
        手机号: "mobile",
        姓名: "username",
        转正日期: "correctionTime",
        工号: "workNumber",
      };
      const arr = [];
      results.forEach((item) => {
        // Object.keys(item); 将数组中循环出来的对象转化成数组
        var obj = {};
        Object.keys(item).forEach((key) => {
          // userRelations[key] 拿到对象里对应的键对应的值 这里面就是一个一个的英文 timeOfEntry...
          // item[key] 拿到的是每个对象里面键值对(key:value)里面的value 这里面就是一个一个的值 例如电话号码的值 姓名的值
          // console.log(userRelations[key]); username...
          if (
            // 这两列的时间需要转化
            userRelations[key] === "timeOfEntry" ||
            userRelations[key] === "correctionTime"
          ) {
            // 后端接口限制了不能是字符串 要转化成时间类型
            obj[userRelations[key]] = new Date(this.formatDate(item[key], "/")); // 只有这样才能入库 这是后端限制
          } else {
            obj[userRelations[key]] = item[key]; // 将原来的中文对应的值 赋值给原来英文对应的值  相当于就是新增了 value:key
          }
        });
        arr.push(obj);
      });
      await importEmployee(arr); // 将数据传给新增接口
      this.$message.success("成功");
      // console.log(this.$route.path);
      this.$router.back(); //再回去
      //this.$router.push(this.$store.getters.path); // 通过vuex和路由守卫来实现跳转回去 这个方法可以实现回退到任何来之前的页面
    },

    // 转换时间问题函数
    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1);
      time.setYear(time.getFullYear() - 70);
      const year = time.getFullYear() + "";
      const month = time.getMonth() + 1 + "";
      const date = time.getDate() - 1 + "";
      if (format && format.length === 1) {
        return year + format + month + format + date;
      }
      return (
        year +
        (month < 10 ? "0" + month : month) +
        (date < 10 ? "0" + date : date)
      );
    },
  },
};
</script>

<style></style>
